package com.zr.command.mapper;

import java.util.List;
import com.zr.command.domain.EimCommandSchedule;
import com.zr.common.core.domain.entity.SysUser;
import org.apache.ibatis.annotations.Param;

/**
 * 指挥调度工单Mapper接口
 * 
 * @author chengkai
 * @date 2022-10-21
 */
public interface EimCommandScheduleMapper 
{
    /**
     * 查询指挥调度工单
     * 
     * @param id 指挥调度工单主键
     * @return 指挥调度工单
     */
    public EimCommandSchedule selectEimCommandScheduleById(Long id);

    /**
     * 查询指挥调度工单列表
     * 
     * @param eimCommandSchedule 指挥调度工单
     * @return 指挥调度工单集合
     */
    public List<EimCommandSchedule> selectEimCommandScheduleList(EimCommandSchedule eimCommandSchedule);

    /**
     * 新增指挥调度工单
     * 
     * @param eimCommandSchedule 指挥调度工单
     * @return 结果
     */
    public int insertEimCommandSchedule(EimCommandSchedule eimCommandSchedule);

    /**
     * 修改指挥调度工单
     * 
     * @param eimCommandSchedule 指挥调度工单
     * @return 结果
     */
    public int updateEimCommandSchedule(EimCommandSchedule eimCommandSchedule);

    /**
     * 删除指挥调度工单
     * 
     * @param id 指挥调度工单主键
     * @return 结果
     */
    public int deleteEimCommandScheduleById(Long id);

    /**
     * 查询指挥调度工单列表
     */
    List<EimCommandSchedule> listEimCommandSchedule(@Param("schedule") EimCommandSchedule eimCommandSchedule,@Param("user") SysUser user);

    /**
     * 查询隔离点列表
     */
    List<String> listQuarantineAddress(Long organizationId);

/**
     * 给工单分配任务小组
     */
    int dispatchScheduleById(@Param("id") Long id,@Param("groupId") Long groupId);

/**
     * 查询指挥调度工单各种状态的数量
     */
    int selectScheduleCountByStatus(@Param("status") Integer status,@Param("userName") String  userName);

    /**
     * 查询指挥调度工单各种类型的数量
     */
    int selectScheduleCountByType(@Param("type")Integer type,@Param("userName") String userName);

    /**
     * 修改指挥调度工单
     * 需求大厅：APP
     */
    int editEimCommandSchedule(EimCommandSchedule eimCommandSchedule);

    /**
     * 查询状态未未分配的指挥调度工单列表
     */
    List<EimCommandSchedule> listUndispatchedEimCommandSchedule(SysUser user);
}
